//
//  ViewController.m
//  21-NSURL-RequestAndReponse
//
//  Created by mafeng on 16/8/11.
//  Copyright © 2016年 mafeng. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // C/S 模式: 客户端 / 服务器端
    // B/S 模式: 浏览器 / 服务器端
    
    // NSURL 负责请求的地址 URL(统一资源定位符)
    NSURL *baiduURL = [NSURL URLWithString:@"http://m.baidu.com/XXX/1.html?username=123&password=12"];
    NSLog(@"%@", baiduURL);
    // 完整的url对应的字符串
    NSLog(@"absoluteString: %@", baiduURL.absoluteString);
    // host: 主机地址 / 域名
    NSLog(@"host: %@", baiduURL.host);
    // path: 主机 / 域名 后对应的路径
    NSLog(@"path: %@", baiduURL.path);
    // query: ?后面的内容(参数)
    NSLog(@"❤️参数❤️ : %@", baiduURL.query);
    // scheme : url 遵循的协议
    NSLog(@"协议:%@", baiduURL.scheme);
    // resourceSpecifier : 除了协议的部分
    NSLog(@"除了协议的部分:%@", baiduURL.resourceSpecifier);
    // 可变请求 和 不可变请求
    // 1. NSURLRequest 不可变的什么都不能改, 只能获取
    NSURLRequest *baiduRequest = [NSURLRequest requestWithURL:baiduURL];
    // 2. NSMutableURLRequest 一般网络请求用这个
    NSMutableURLRequest *baiduMutableRequest = [NSMutableURLRequest requestWithURL:baiduURL];
    // 1> 超时时间, 一个请求持续多久, 会失败
    baiduMutableRequest.timeoutInterval = 1000;
    // 2> HTTPMethod 请求的姿势 GET POST PUT DELETE
    baiduMutableRequest.HTTPMethod = @"GET";
    // 3> allHTTPHeaderFields 根据字典特性, 相同key下, 后填入的值, 会覆盖前面的值
    baiduMutableRequest.allHTTPHeaderFields = @{@"User-Agent" : @"iOS 10.0 / iPhone9, 1"};
    [baiduMutableRequest setValue:@"iOS 10.0 / iPhone8, 1" forHTTPHeaderField:@"User-Agent"];
    [baiduMutableRequest valueForHTTPHeaderField:@"User-Agent"];
    NSLog(@"%@", baiduMutableRequest.allHTTPHeaderFields);
    // 4> HTTPBody (一般POST请求时, 才会使用)
    // 一般情况下, 都是字典/字符串转化成的Data
    baiduMutableRequest.HTTPBody = [NSData data];
    
    // 3. NSURLResponse 响应
    NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:baiduURL statusCode:200 HTTPVersion:@"HTTP/1.1" headerFields:@{@"date" : [NSDate date]}];
    // 1> statusCode 状态码
    //response.statusCode;
    // 2> allHeaderFields 响应头
    // 内容类型, 编码
    // Content-Type: application/json; charset:utf-8
    // 时间 日期
    // 缓存的一些内容
    NSLog(@"%@", response.allHeaderFields);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
